//////////////////////////////////////////////////////////////////////////
#pragma once

#include <QFileInfo>
#include <QString>
#include <QStringList>
#include <QVector>


namespace Gfed
{
	//////////////////////////////////////////////////////////////////////////
	// The game description is a tools only file and system intended to
	// describe how the game is setup to work.
	//	Current intentions:
	//		The game name.
	//		The base working directory.
	//		List of packages expected for the final release with mount points.
	//		List of directories and mount points for the source override dirs.
	//
	//	Will add watches to package files and the source override dirs.
	class GameDescription
	{
	public:
		//////////////////////////////////////////////////////////////////////////
		typedef QPair< QString, QString >		MountPoint_t;
		typedef QVector< MountPoint_t >			MountPointVector_t;


		//////////////////////////////////////////////////////////////////////////
		GameDescription();

		//////////////////////////////////////////////////////////////////////////
		bool					create( QWidget* );
		bool					close();
		bool					load( const QString& filename );
		bool					save( const QString& filenameo );

		//////////////////////////////////////////////////////////////////////////
		QString					Name() const									{return GameName;}
		QString					Base() const									{return BaseDirectory;}

	private:
		//////////////////////////////////////////////////////////////////////////
		bool					Modified;

		QString					GameName;
		QString					BaseDirectory;

		MountPointVector_t		Packages;
		MountPointVector_t		Overrides;
	};
}
